package com.hejielife.command;

/**
 * <hr>
 * 命令模式:<br>
 * 用原型实例指定创建对象的种类，并且通过拷贝这些原型创建新的对象。
 * <hr>
 * 适用性 :<br>
 * 1.抽象出待执行的动作以参数化某对象。 <br>
 * 2.在不同的时刻指定、排列和执行请求。 <br>
 * 3.支持取消操作。 <br>
 * 4.支持修改日志，这样当系统崩溃时，这些修改可以被重做一遍。 <br>
 * 5.用构建在原语操作上的高层操作构造一个系统。
 */
public class Client {

	public static void main(String[] args) {
		// 首先声明出调用者Invoker
		Invoker invoker = new Invoker();

		// 定义接收者
		Receiver receiver = new ConcreteReciver1();

		// 定义一个发送给接收者的命令
		Command command = new ConcreteCommand1(receiver);

		// 把命令交给调用者去执行
		invoker.setCommand(command);
		invoker.action();

	}

}
